基本上運算式與其他語言並無太大區別,大致條列一下
=
: 指定值給變數+,-,*,/
: 加,減,乘,除//
: 整除**
: 次方%
: 取餘數-
: 負數a = 10
b = 5
c = 3
print(a + b)
print(a - b)
print(a * b)
print(a / b) # 注意!運算後型態為float
print(b ** 2)
print(a % c)
print(a // c) #型態為整數
#輸出:
#15
#5
#50
#2.0
#25
#1
#3
>
: 大於<
: 小於==
: 等於!=
: 不等於>=
: 大於等於<=
: 小於等於注意! 關係運算式返回結果為布林值True/False
a = 10
b = 5
c = 3
print(a > b)
print(a < b)
print(a == b)
print(a != b)
print(b >= 5)
print(b >= 6)
print(c <= 3)
print(c <= 5)
#輸出:
#True
#False
#False
#True
#True
#False
#True
#True
and
: 且not
: 否or
: 或is
: 是a = 10
b = 5
c = 3
print(a > b and a > c)
print(a > b or a > c)
print(not a < b)
#輸出:
#True
#True
#True
其中is
比較特別,在is
與==
有何差異呢? 以下我們來測試看看
判斷數值與字串
a = 256
b = 256
d = '123'
c = '123'
print(a is b)
print(a == b)
print(d is c)
print(d == c)
#輸出:
#True
#True
#True
#True
但在判定物件時就不同了,範例如下
x = [4,5,6]
y = x
z = [4,5,6]
print(x is y)
print(x is z)
print(x == z)
#輸出:
#True
#False
#True
其原因是Python中對象包含的三個基本要素,分別是:id(記憶體位置)、python type()(數據類型)和value(值)
==
依據value進行判別is
依據id進行判別這就涉及到資料結構的部分python可以使用id()
函式取的物件的id(記憶體位置),我測試後發現數值與字串中同值會存放於同id,測試如下
a = 257
b = 257
print(id(a))
print(id(b))
#輸出:
#4555684016
#4555684016
d = '123'
c = '123'
print(id(d))
print(id(c))
#輸出:
#4555785752
#4555785752
x = [4,5,6]
y = x
z = [4,5,6]
print(id(x))
print(id(y))
print(id(z))
#輸出:
#4555793480
#4555793480
#4555644360
從測試結果來看可以發現字串及數值在值相同時都是相同id所以使用is
判斷時等同於==
物件x與z的id並不相同所以用is
判斷結果會為False.
文章內容如果有錯誤歡迎留言告知,可以幫忙糾正錯誤的觀念,感謝!
看到 id 讓我想起曾經玩過的 id 特例
>>> a=5
>>> b=5
>>> id(a), id(b) # 等於
(1720937632, 1720937632)
>>> a,b = 257,257
>>> id(a), id(b) # 等於
(2262236076624, 2262236076624)
>>> a = 257
>>> b = 257
>>> id(a), id(b) # 不等於
(2262236077264, 2262236076560)
這個特例在找資料時也有看到
但實作一次竟然發現他又等於了
也不曉得原因~~
a = 257
b = 257
print(id(a), id(b))
print(a is b)
真的蠻怪的